home *** CD-ROM | disk | FTP | other *** search
- #ifndef _SYS_STAT_INCLUDED
- #define _SYS_STAT_INCLUDED
-
- /*
- * ** stat structure used by fstat() and stat()
- * ** will not be compatible with your compiler's stat() and fstat()
- */
- #include <sys/types.h>
-
- #ifndef _BOOL_T
- #define _BOOL_T
- typedef int bool_t;
- #endif /* _DEV_T */
-
- #ifndef _DEV_T
- #define _DEV_T
- typedef long dev_t;
- #endif /* _DEV_T */
-
- #ifndef _ENUM_T
- #define _ENUM_T
- typedef int enum_t; /* For device numbers */
- #endif /* _DEV_T */
-
- #ifndef _INO_T
- #define _INO_T
- typedef unsigned long ino_t; /* For file serial numbers */
- #endif /* _INO_T */
-
- #ifndef _MODE_T
- #define _MODE_T
- typedef unsigned short mode_t; /* For file types and modes */
- #endif /* _MODE_T */
-
- #ifndef _NLINK_T
- #define _NLINK_T
- typedef short nlink_t; /* For link counts */
- #endif /* _NLINK_T */
-
- #ifndef _OFF_T
- #define _OFF_T
- typedef long off_t; /* For file offsets and sizes */
- #endif /* _OFF_T */
-
- #ifndef _PID_T
- #define _PID_T
- typedef long pid_t; /* For process and session IDs */
- #endif /* _PID_T */
-
- #ifndef _GID_T
- #define _GID_T
- typedef long gid_t; /* For group IDs */
- #endif /* _GID_T */
-
- #ifndef _UID_T
- #define _UID_T
- typedef long uid_t; /* For user IDs */
- #endif /* _UID_T */
-
- #ifndef _TIME_T
- #define _TIME_T
- typedef long time_t; /* For times in seconds */
- #endif /* _TIME_T */
-
- #ifndef _SIZE_T
- #define _SIZE_T
- typedef unsigned int size_t; /* Type returned by sizeof() */
- #endif /* _SIZE_T */
-
- #ifndef _SSIZE_T
- #define _SSIZE_T
- typedef int ssize_t; /* Signed version of size_t */
- #endif /* _SSIZE_T */
-
- #ifndef _SITE_T
- #define _SITE_T
- typedef unsigned short __site_t; /* see stat.h */
- #endif /* _SITE_T */
-
- #ifndef _CNODE_T
- #define _CNODE_T
- typedef unsigned short __cnode_t; /* see stat.h */
- #endif /* _CNODE_T */
-
- typedef long __daddr_t; /* For disk block addresses */
- typedef char *__caddr_t; /* For character addresses */
- typedef long __swblk_t;
-
- #ifndef _CADDR_T
- #define _CADDR_T
- typedef __caddr_t caddr_t; /* also in ptrace.h */
- #endif /* _CADDR_T */
-
- typedef unsigned char ubit8;
- typedef unsigned short ubit16;
- typedef unsigned long ubit32;
- typedef char sbit8;
- typedef short sbit16;
- typedef long sbit32;
-
- typedef __swblk_t swblk_t;
- typedef __daddr_t daddr_t;
- typedef __site_t site_t;
- typedef __cnode_t cnode_t;
-
- typedef long paddr_t;
- typedef short cnt_t;
- typedef unsigned int space_t;
- typedef unsigned int prot_t;
- typedef unsigned long cdno_t;
- typedef unsigned short use_t;
-
- typedef struct _physadr { int r[1]; } *physadr;
- typedef struct _quad { long val[2]; } quad;
-
- typedef char spu_t;
-
- struct stat
- {
- dev_t st_dev;
- ino_t st_ino;
- mode_t st_mode;
- nlink_t st_nlink;
- unsigned short st_reserved1; /* old st_uid, replaced spare positions */
- unsigned short st_reserved2; /* old st_gid, replaced spare positions */
- dev_t st_rdev;
- off_t st_size;
- time_t st_atime;
- int st_spare1;
- time_t st_mtime;
- int st_spare2;
- time_t st_ctime;
- int st_spare3;
- long st_blksize;
- long st_blocks;
- unsigned int st_pad:30;
- unsigned int st_acl:1; /* set if there are optional ACL entries */
- unsigned int st_remote:1; /* Set if file is remote */
- dev_t st_netdev; /* ID of device containing */
- /* network special file */
- ino_t st_netino; /* Inode number of network special file */
- __cnode_t st_cnode;
- __cnode_t st_rcnode;
- /* The site where the network device lives */
- __site_t st_netsite;
- short st_fstype;
- /* Real device number of device containing the inode for this file */
- dev_t st_realdev;
- /* Steal three spare for the device site number */
- unsigned short st_basemode;
- unsigned short st_spareshort;
- uid_t st_uid;
- gid_t st_gid;
- #define _SPARE4_SIZE 3
- long st_spare4[_SPARE4_SIZE];
- };
-
- /* st_mode will have bits set as follows */
- /* the least significant 9 bits will be the unix
- * ** rwxrwxrwx bits (octal 777).
- */
-
- #ifndef S_IRWXU /* fcntl.h might have already defined these */
- #define S_ISUID 0004000 /* set user ID on execution */
- #define S_ISGID 0002000 /* set group ID on execution */
-
- #define S_IRWXU 0000700 /* read, write, execute permission (owner) */
- #define S_IRUSR 0000400 /* read permission (owner) */
- #define S_IWUSR 0000200 /* write permission (owner) */
- #define S_IXUSR 0000100 /* execute permission (owner) */
-
- #define S_IRWXG 0000070 /* read, write, execute permission (group) */
- #define S_IRGRP 0000040 /* read permission (group) */
- #define S_IWGRP 0000020 /* write permission (group) */
- #define S_IXGRP 0000010 /* execute permission (group) */
-
- #define S_IRWXO 0000007 /* read, write, execute permission (other) */
- #define S_IROTH 0000004 /* read permission (other) */
- #define S_IWOTH 0000002 /* write permission (other) */
- #define S_IXOTH 0000001 /* execute permission (other) */
- #endif /* S_IRWXU */
-
- #define _S_IFMT 0170000 /* type of file */
- #define _S_IFREG 0100000 /* regular */
- #define _S_IFBLK 0060000 /* block special */
- #define _S_IFCHR 0020000 /* character special */
- #define _S_IFDIR 0040000 /* directory */
- #define _S_IFIFO 0010000 /* pipe or FIFO */
- #define S_IFMT _S_IFMT /* type of file */
- #define S_IFBLK _S_IFBLK /* block special */
- #define S_IFCHR _S_IFCHR /* character special */
- #define S_IFDIR _S_IFDIR /* directory */
- #define S_IFIFO _S_IFIFO /* pipe or FIFO */
- #define S_IFREG _S_IFREG /* regular */
-
- #define S_IFSOCK 0140000 /* socket */
- #define S_IFLNK 0120000 /* symbolic link */
- #define S_IFNWK 0110000 /* network special */
-
- #define S_ISDIR(_M) ((_M & _S_IFMT)==_S_IFDIR) /* test for directory */
- #define S_ISCHR(_M) ((_M & _S_IFMT)==_S_IFCHR) /* test for char special */
- #define S_ISBLK(_M) ((_M & _S_IFMT)==_S_IFBLK) /* test for block special */
- #define S_ISREG(_M) ((_M & _S_IFMT)==_S_IFREG) /* test for regular file */
- #define S_ISFIFO(_M) ((_M & _S_IFMT)==_S_IFIFO) /* test for pipe or FIFO */
- #define S_ISSOCK(_M) ((_M & S_IFMT)==S_IFSOCK) /* test for socket */
- #define S_ISLNK(_M) ((_M & S_IFMT)==S_IFLNK) /* test for symbolic link */
-
- int stat(const char *name, struct stat *buf);
- int lstat(const char *name, struct stat *buf);
- int fstat(int fd, struct stat *buf);
-
- #ifndef S_IREAD
- #define S_IREAD S_IRUSR
- #define S_IWRITE S_IWUSR
- #define S_IEXEC S_IXUSR
- #endif
-
- #define btod(p, t) ((t)(((long)p)<<2))
- #define dtob(p) ((BPTR)((long)(p)>>2))
-
- #define EBADF 9 /* bad file handle */
- #define ENOMEM 12 /* no memory */
-
- #endif /* _SYS_STAT_INCLUDED */
-